#!/bin/bash

show_config() {
  # load graphic configuration
  get_graphicdrivers

  dashes="==========================="
  config_message="\n $dashes$dashes$dashes"
  config_message+="\n Configuration for $DISTRONAME ($([ "$OFFICIAL" = "yes" ] && echo "official" || echo "community"))"
  config_message+="\n $dashes$dashes$dashes"

  # Build options

  config_message+="\n\n Buildsystem configuration:"
  config_message+="\n $dashes$dashes"

  config_message+="\n - CPU (ARCH):\t\t\t\t $TARGET_CPU ($TARGET_ARCH)"
  config_message+="\n - FLOAT:\t\t\t\t $TARGET_FLOAT"
  config_message+="\n - FPU:\t\t\t\t\t $TARGET_FPU"
  config_message+="\n - CPU features:\t\t\t $TARGET_FEATURES"
  config_message+="\n - LTO (Link Time Optimization) support: $LTO_SUPPORT"
  config_message+="\n - GOLD (Google Linker) Support:\t $GOLD_SUPPORT"
  config_message+="\n - LLVM support:\t\t\t $LLVM_SUPPORT"
  config_message+="\n - DEBUG:\t\t\t\t ${DEBUG:-no}"
  config_message+="\n - CFLAGS:\t $TARGET_CFLAGS"
  config_message+="\n - LDFLAGS:\t $TARGET_LDFLAGS"

  # Misc. hardware configuration

  config_message+="\n\n Misc. hardware configuration:"
  config_message+="\n $dashes$dashes"

  config_message+="\n - ALSA support:\t\t\t $ALSA_SUPPORT"
  config_message+="\n - Pulseaudio support:\t\t\t $PULSEAUDIO_SUPPORT"
  config_message+="\n - Bluetooth support:\t\t\t $BLUETOOTH_SUPPORT"

  for config_driver in $ADDITIONAL_DRIVERS; do
    config_message+="\n - Include driver:\t\t\t $config_driver"
  done

  if [ "$DRIVER_ADDONS_SUPPORT" = "yes" ]; then
    for config_driver_addons in $DRIVER_ADDONS; do
      config_message+="\n - Include driver add-ons:\t\t $config_driver_addons"
    done
  fi

  for config_firmware in $FIRMWARE; do
    config_message+="\n - Include firmware:\t\t\t $config_firmware"
  done

  # Misc. Filesystems

  config_message+="\n\n Misc. Filesystems:"
  config_message+="\n $dashes$dashes"

  config_message+="\n - Swap Support:\t\t\t $SWAP_SUPPORT"
  if [ "$SWAP_SUPPORT" = "yes" ]; then
    config_message+="\n   - Swapfile default size:\t\t $SWAPFILESIZE"
  fi
  config_message+="\n - NTFS Support (via Fuse):\t\t $NTFS3G"
  config_message+="\n - Install HFS Tools:\t\t\t $HFSTOOLS"

  # Network service configuration

  config_message+="\n\n Network service configuration:"
  config_message+="\n $dashes$dashes"

  config_message+="\n - Avahi (Zeroconf) support:\t\t $AVAHI_DAEMON"
  config_message+="\n - NFS mounting support:\t\t $NFS_SUPPORT"
  config_message+="\n - SAMBA mounting support:\t\t $SAMBA_SUPPORT"
  config_message+="\n - SAMBA server support:\t\t $SAMBA_SERVER"
  config_message+="\n - SFTP server support:\t\t\t $SFTP_SERVER"
  config_message+="\n - OpenVPN support:\t\t\t $OPENVPN_SUPPORT"
  config_message+="\n - WireGuard support:\t\t\t $WIREGUARD_SUPPORT"

  # Graphic configuration

  config_message+="\n\n Graphic configuration:"
  config_message+="\n $dashes$dashes"

  if [ "$DISPLAYSERVER" = "x11" ] ; then
    config_message+="\n - Xorg Graphic Drivers:\t\t $GRAPHIC_DRIVERS"
    config_message+="\n - XORG Composite support:\t\t $COMPOSITE_SUPPORT"
    config_message+="\n - WindowManager:\t\t\t $WINDOWMANAGER"
  fi
  config_message+="\n - OpenGL (GLX) support (provider):\t $OPENGL_SUPPORT ($OPENGL)"
  config_message+="\n - OpenGLES support (provider):\t\t $OPENGLES_SUPPORT ($OPENGLES)"
  config_message+="\n - VAAPI Support:\t\t\t $VAAPI_SUPPORT"
  config_message+="\n - VDPAU Support:\t\t\t $VDPAU_SUPPORT"

  # OS configuration

  config_message+="\n\n OS configuration:"
  config_message+="\n $dashes$dashes"

  config_message+="\n - OEM Support:\t\t\t\t $OEM_SUPPORT"
  config_message+="\n - Default ROOT Password:\t\t $ROOT_PASSWORD"
  config_message+="\n - Bootloader:\t\t\t\t $BOOTLOADER"
  config_message+="\n - UDevil support:\t\t\t $UDEVIL"
  config_message+="\n - Installer support:\t\t\t $INSTALLER_SUPPORT"
  for config_package in $ADDITIONAL_PACKAGES; do
    config_message+="\n - Include package:\t\t\t $config_package"
  done

  # Distribution specific configuration
  # show_distro_config() should be included in one of:
  #   $DISTRO/config/functions
  #   $DISTRO/show_config

  if [ -f distributions/${DISTRO}/show_config ]; then
    . distributions/${DISTRO}/show_config
  fi
  if [ "$(type -t show_distro_config)" = "function" ]; then
    show_distro_config
  fi

  config_message+="\n\n $dashes$dashes$dashes"
  config_message+="\n End Configuration for $DISTRONAME"
  config_message+="\n $dashes$dashes$dashes"
  config_message+="\n\n\n"

  echo -e "$config_message"
}
